home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Internet / WWW / Perl_WWW_Utilities / perlMIF_beta2 / mif / mif_pgf.pl < prev    next >
Encoding:
Perl Script  |  1994-05-18  |  24.0 KB  |  820 lines

  1. ##---------------------------------------------------------------------------##
  2. ##  File:
  3. ##      mif_pgf.pl
  4. ##  Author:
  5. ##      Earl Hood       ehood@convex.com
  6. ##  Description:
  7. ##    This file is defines the "mif_pgf" perl package.  It defines
  8. ##    routines to handle Pgf via MIFread_mif() defined in
  9. ##    the "mif" package.
  10. ##---------------------------------------------------------------------------##
  11. ##  Copyright (C) 1994  Earl Hood, ehood@convex.com
  12. ##
  13. ##  This program is free software; you can redistribute it and/or modify
  14. ##  it under the terms of the GNU General Public License as published by
  15. ##  the Free Software Foundation; either version 2 of the License, or
  16. ##  (at your option) any later version.
  17. ## 
  18. ##  This program is distributed in the hope that it will be useful,
  19. ##  but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. ##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21. ##  GNU General Public License for more details.
  22. ##  
  23. ##  You should have received a copy of the GNU General Public License
  24. ##  along with this program; if not, write to the Free Software
  25. ##  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  26. ##---------------------------------------------------------------------------##
  27.  
  28. require 'mif/mif.pl' || die "Unable to require mif.pl\n";
  29. require 'mif/mif_font.pl' || die "Unable to require mif_font.pl\n";
  30. require 'mif/mif_tab.pl' || die "Unable to require mif_tab.pl\n";
  31.  
  32. package mif_pgf;
  33.  
  34. ##-------------------------------------##
  35. ## Add Pgf routines to %MIFToken array ##
  36. ##-------------------------------------##
  37. $mif'MIFToken{'Pgf'} = "mif_pgf'Pgf";
  38. @mif'MIFToken{
  39.     'PgfTag',
  40.     'PgfUseNextTag',
  41.     'PgfNextTag',
  42.     'PgfFIndent',
  43.     'PgfLIndent',
  44.     'PgfRIndent',
  45.     'PgfAlignment',
  46.     'PgfSpBefore',
  47.     'PgfSpAfter',
  48.     'PgfLineSpacing',
  49.     'PgfLeading',
  50.     'PgfNumTabs',
  51.     'PgfPlacement',
  52.     'PgfPlacementStyle',
  53.     'PgfRunInDefaultPunct',
  54.     'PgfWithPrev',
  55.     'PgfWithNext',
  56.     'PgfBlockSize',
  57.     'PgfAutoNum',
  58.     'PgfNumFormat',
  59.     'PgfNumberFont',
  60.     'PgfNumAtEnd',
  61.     'PgfHyphenate',
  62.     'HyphenMaxLines',
  63.     'HyphenMinPrefix',
  64.     'HyphenMinSuffix',
  65.     'HyphenMinWord',
  66.     'PgfLetterSpace',
  67.     'PgfMinWordSpace',
  68.     'PgfOptWordSpace',
  69.     'PgfMaxWordSpace',
  70.     'PgfLanguage',
  71.     'PgfTopSeparator',
  72.     'PgfBotSeparator',
  73.     'PgfCellAlignment',
  74.     'PgfCellMargins',
  75.     'PgfCellLMarginFixed',
  76.     'PgfCellTMarginFixed',
  77.     'PgfCellRMarginFixed',
  78.     'PgfCellBMarginFixed'
  79. } = (
  80.     "mif_pgf'PgfTag",
  81.     "mif_pgf'PgfUseNextTag",
  82.     "mif_pgf'PgfNextTag",
  83.     "mif_pgf'PgfFIndent",
  84.     "mif_pgf'PgfLIndent",
  85.     "mif_pgf'PgfRIndent",
  86.     "mif_pgf'PgfAlignment",
  87.     "mif_pgf'PgfSpBefore",
  88.     "mif_pgf'PgfSpAfter",
  89.     "mif_pgf'PgfLineSpacing",
  90.     "mif_pgf'PgfLeading",
  91.     "mif_pgf'PgfNumTabs",
  92.     "mif_pgf'PgfPlacement",
  93.     "mif_pgf'PgfPlacementStyle",
  94.     "mif_pgf'PgfRunInDefaultPunct",
  95.     "mif_pgf'PgfWithPrev",
  96.     "mif_pgf'PgfWithNext",
  97.     "mif_pgf'PgfBlockSize",
  98.     "mif_pgf'PgfAutoNum",
  99.     "mif_pgf'PgfNumFormat",
  100.     "mif_pgf'PgfNumberFont",
  101.     "mif_pgf'PgfNumAtEnd",
  102.     "mif_pgf'PgfHyphenate",
  103.     "mif_pgf'HyphenMaxLines",
  104.     "mif_pgf'HyphenMinPrefix",
  105.     "mif_pgf'HyphenMinSuffix",
  106.     "mif_pgf'HyphenMinWord",
  107.     "mif_pgf'PgfLetterSpace",
  108.     "mif_pgf'PgfMinWordSpace",
  109.     "mif_pgf'PgfOptWordSpace",
  110.     "mif_pgf'PgfMaxWordSpace",
  111.     "mif_pgf'PgfLanguage",
  112.     "mif_pgf'PgfTopSeparator",
  113.     "mif_pgf'PgfBotSeparator",
  114.     "mif_pgf'PgfCellAlignment",
  115.     "mif_pgf'PgfCellMargins",
  116.     "mif_pgf'PgfCellLMarginFixed",
  117.     "mif_pgf'PgfCellTMarginFixed",
  118.     "mif_pgf'PgfCellRMarginFixed",
  119.     "mif_pgf'PgfCellBMarginFixed"
  120. );
  121.  
  122. ##-------------------##
  123. ## mif_pgf variables ##
  124. ##-------------------##
  125. $pgf_close_func = "";    # Function to call during Pgf closure.
  126.  
  127. $tf    = "'";        # Character separating TabStop fields.
  128. $ts    = ${;};        # Character separating TabStops.
  129.  
  130. ##--------------------------------------##
  131. ## Variables for current Pgf definition ##
  132. ##--------------------------------------##
  133. $pgf_Tag        = "";
  134. $pgf_UseNextTag        = "";
  135. $pgf_NextTag        = "";
  136. $pgf_FIndent        = "";
  137. $pgf_LIndent        = "";
  138. $pgf_RIndent        = "";
  139. $pgf_Alignment        = "";
  140. $pgf_SpBefore        = "";
  141. $pgf_SpAfter        = "";
  142. $pgf_LineSpacing    = "";
  143. $pgf_Leading        = "";
  144. $pgf_NumTabs        = "";
  145. $pgf_TabStops        = "";
  146. $pgf_Placement        = "";
  147. $pgf_PlacementStyle    = "";
  148. $pgf_RunInDefaultPunct    = "";
  149. $pgf_WithPrev        = "";
  150. $pgf_WithNext        = "";
  151. $pgf_BlockSize        = "";
  152. $pgf_AutoNum        = "";
  153. $pgf_NumFormat        = "";
  154. $pgf_NumberFont        = "";
  155. $pgf_NumAtEnd        = "";
  156. $pgf_Hyphenate        = "";
  157. $pgf_HyphenMaxLines    = "";
  158. $pgf_HyphenMinPrefix    = "";
  159. $pgf_HyphenMinSuffix    = "";
  160. $pgf_HyphenMinWord    = "";
  161. $pgf_LetterSpace    = "";
  162. $pgf_MinWordSpace    = "";
  163. $pgf_OptWordSpace    = "";
  164. $pgf_MaxWordSpace    = "";
  165. $pgf_Language        = "";
  166. $pgf_TopSeparator    = "";
  167. $pgf_BotSeparator    = "";
  168. $pgf_CellAlignment    = "";
  169. $pgf_CellMargins    = "";
  170. $pgf_CellLMarginFixed    = "";
  171. $pgf_CellTMarginFixed    = "";
  172. $pgf_CellRMarginFixed    = "";
  173. $pgf_CellBMarginFixed    = "";
  174.  
  175. $fnt_Tag        = "";
  176. $fnt_Family        = "";
  177. $fnt_Angle        = "";
  178. $fnt_Weight        = "";
  179. $fnt_Var        = "";
  180. $fnt_PostScriptName    = "";
  181. $fnt_PlatformName    = "";
  182. $fnt_Size        = "";
  183. $fnt_Color        = "";
  184. $fnt_Underline        = "";
  185. $fnt_DoubleUnderline    = "";
  186. $fnt_NumericUnderline    = "";
  187. $fnt_Underlining    = "";
  188. $fnt_Overline        = "";
  189. $fnt_Strike        = "";
  190. $fnt_SupScript        = "";
  191. $fnt_SubScript        = "";
  192. $fnt_ChangeBar        = "";
  193. $fnt_Position        = "";
  194. $fnt_Outline        = "";
  195. $fnt_Shadow        = "";
  196. $fnt_PairKern        = "";
  197. $fnt_Case        = "";
  198. $fnt_DX            = "";
  199. $fnt_DY            = "";
  200. $fnt_DW            = "";
  201. $fnt_Plain        = "";
  202. $fnt_Bold        = "";
  203. $fnt_Italic        = "";
  204. $fnt_Separation        = "";
  205.  
  206. ##------------------------##
  207. ## Import 'mif' variables ##
  208. ##------------------------##
  209. $MStore        = $mif'MStore;
  210. $MOpen        = $mif'MOpen;
  211. $MClose        = $mif'MClose;
  212. $MLine        = $mif'MLine;
  213. $mso        = $mif'mso;
  214. $msc        = $mif'msc;
  215. $stb        = $mif'stb;
  216. $ste        = $mif'ste;
  217. $como        = $mif'como;
  218.  
  219.                 ##---------------##
  220.                 ## Main Routines ##
  221.                 ##---------------##
  222. ##---------------------------------------------------------------------------
  223. ##    MIFget_pgf_func() returns the function that is called when the
  224. ##    Pgf statement closes.
  225. ##
  226. ##    Usage:
  227. ##        $func = &'MIFget_pgf_func();
  228. ##
  229. sub main'MIFget_pgf_func {
  230.     $pgf_close_func;
  231. }
  232. ##---------------------------------------------------------------------------
  233. ##    MIFset_pgf_func() sets the function that is called when the
  234. ##    Pgf statement closes.
  235. ##
  236. ##    Usage:
  237. ##        &'MIFset_pgf_func($func);
  238. ##
  239. sub main'MIFset_pgf_func {
  240.     $pgf_close_func = $_[0];
  241. }
  242. ##---------------------------------------------------------------------------
  243. ##    MIFwrite_pgf() outputs the Pgf in MIF.
  244. ##
  245. ##    Usage:
  246. ##        &'MIFwrite_pgf(FILEHANDLE, $indent, <pgf vars ...>);
  247. ##
  248. sub main'MIFwrite_pgf {
  249.     local($handle, $l,
  250.       $Tag,
  251.       $UseNextTag,
  252.       $NextTag,
  253.       $FIndent,
  254.       $LIndent,
  255.       $RIndent,
  256.       $Alignment,
  257.       $SpBefore,
  258.       $SpAfter,
  259.       $LineSpacing,
  260.       $Leading,
  261.       $NumTabs,
  262.       $TabStops,
  263.       $Placement,
  264.       $PlacementStyle,
  265.       $RunInDefaultPunct,
  266.       $WithPrev,
  267.       $WithNext,
  268.       $BlockSize,
  269.       $AutoNum,
  270.       $NumFormat,
  271.       $NumberFont,
  272.       $NumAtEnd,
  273.       $Hyphenate,
  274.       $HyphenMaxLines,
  275.       $HyphenMinPrefix,
  276.       $HyphenMinSuffix,
  277.       $HyphenMinWord,
  278.       $LetterSpace,
  279.       $MinWordSpace,
  280.       $OptWordSpace,
  281.       $MaxWordSpace,
  282.       $Language,
  283.       $TopSeparator,
  284.       $BotSeparator,
  285.       $CellAlignment,
  286.       $CellMargins,
  287.       $CellLMarginFixed,
  288.       $CellTMarginFixed,
  289.       $CellRMarginFixed,
  290.       $CellBMarginFixed,
  291.       @font_data) = @_;
  292.     local($i0, $i1, $i2) = (' ' x $l, ' ' x (1+$l), ' ' x (2+$l));
  293.  
  294.     print $handle $i0, $mso, "Pgf\n";
  295.     print $handle $i1, $mso, 'PgfTag ', $stb, $Tag, $ste, $msc, "\n"
  296.     if $Tag ne "";
  297.     print $handle $i1, $mso, 'PgfUseNextTag ', $UseNextTag, $msc, "\n"
  298.     if $UseNextTag ne "";
  299.     print $handle $i1, $mso, 'PgfNextTag ', $stb, $NextTag, $ste, $msc, "\n"
  300.     ;
  301.     print $handle $i1, $mso, 'PgfAlignment ', $Alignment, $msc, "\n"
  302.     if $Alignment ne "";
  303.     print $handle $i1, $mso, 'PgfFIndent ', $FIndent, $msc, "\n"
  304.     if $FIndent ne "";
  305.     print $handle $i1, $mso, 'PgfLIndent ', $LIndent, $msc, "\n"
  306.     if $LIndent ne "";
  307.     print $handle $i1, $mso, 'PgfRIndent ', $RIndent, $msc, "\n"
  308.     if $RIndent ne "";
  309.     print $handle $i1, $mso, 'PgfTopSeparator ', $stb, $TopSeparator, $ste,
  310.                $msc, "\n"
  311.     ;
  312.     print $handle $i1, $mso, 'PgfBotSeparator ', $stb, $BotSeparator, $ste,
  313.                $msc, "\n"
  314.     ;
  315.     print $handle $i1, $mso, 'PgfPlacement ', $Placement, $msc, "\n"
  316.     if $Placement ne "";
  317.     print $handle $i1, $mso, 'PgfPlacementStyle ', $PlacementStyle, $msc, "\n"
  318.     if $PlacementStyle ne "";
  319.     print $handle $i1, $mso, 'PgfRunInDefaultPunct ', $stb,
  320.                $RunInDefaultPunct, $ste, $msc, "\n"
  321.     if $RunInDefaultPunct ne "";
  322.     print $handle $i1, $mso, 'PgfSpBefore ', $SpBefore, $msc, "\n"
  323.     if $SpBefore ne "";
  324.     print $handle $i1, $mso, 'PgfSpAfter ', $SpAfter, $msc, "\n"
  325.     if $SpAfter ne "";
  326.     print $handle $i1, $mso, 'PgfWithPrev ', $WithPrev, $msc, "\n"
  327.     if $WithPrev ne "";
  328.     print $handle $i1, $mso, 'PgfWithNext ', $WithNext, $msc, "\n"
  329.     if $WithNext ne "";
  330.     print $handle $i1, $mso, 'PgfBlockSize ', $BlockSize, $msc, "\n"
  331.     if $BlockSize ne "";
  332.  
  333.     &'MIFwrite_font($handle, 1+$l, 'PgfFont', shift @font_data, @font_data);
  334.  
  335.     print $handle $i1, $mso, 'PgfLineSpacing ', $LineSpacing, $msc, "\n"
  336.     if $LineSpacing ne "";
  337.     print $handle $i1, $mso, 'PgfLeading ', $Leading, $msc, "\n"
  338.     if $Leading ne "";
  339.     print $handle $i1, $mso, 'PgfAutoNum ', $AutoNum, $msc, "\n"
  340.     if $AutoNum ne "";
  341.     print $handle $i1, $mso, 'PgfNumFormat ', $stb, $NumFormat, $ste,
  342.                $msc, "\n"
  343.     if $NumFormat ne "";
  344.     print $handle $i1, $mso, 'PgfNumberFont ', $stb, $NumberFont, $ste,
  345.                $msc, "\n"
  346.     if $NumFormat ne "";
  347.     print $handle $i1, $mso, 'PgfNumAtEnd ', $NumAtEnd, $msc, "\n"
  348.     if $NumAtEnd ne "";
  349.     print $handle $i1, $mso, 'PgfNumTabs ', $NumTabs, $msc, "\n"
  350.     if $NumTabs ne "";
  351.  
  352.     foreach (split(/$ts/o, $TabStops)) {
  353.     &'MIFwrite_tab($handle, 1+$l, split(/$tf/o, $_, 4));
  354.     }
  355.  
  356.     print $handle $i1, $mso, 'PgfHyphenate ', $Hyphenate, $msc, "\n"
  357.     if $Hyphenate ne "";
  358.     print $handle $i1, $mso, 'HyphenMaxLines ', $HyphenMaxLines, $msc, "\n"
  359.     if $HyphenMaxLines ne "";
  360.     print $handle $i1, $mso, 'HyphenMinPrefix ', $HyphenMinPrefix,
  361.                $msc, "\n"
  362.     if $HyphenMinPrefix ne "";
  363.     print $handle $i1, $mso, 'HyphenMinSuffix ', $HyphenMinSuffix,
  364.                $msc, "\n"
  365.     if $HyphenMinSuffix ne "";
  366.     print $handle $i1, $mso, 'HyphenMinWord ', $HyphenMinWord, $msc, "\n"
  367.     if $HyphenMinWord ne "";
  368.     print $handle $i1, $mso, 'PgfLetterSpace ', $LetterSpace, $msc, "\n"
  369.     if $LetterSpace ne "";
  370.     print $handle $i1, $mso, 'PgfMinWordSpace ', $MinWordSpace, $msc, "\n"
  371.     if $MinWordSpace ne "";
  372.     print $handle $i1, $mso, 'PgfOptWordSpace ', $OptWordSpace, $msc, "\n"
  373.     if $OptWordSpace ne "";
  374.     print $handle $i1, $mso, 'PgfMaxWordSpace ', $MaxWordSpace, $msc, "\n"
  375.     if $MaxWordSpace ne "";
  376.     print $handle $i1, $mso, 'PgfLanguage ', $Language, $msc, "\n"
  377.     if $Language ne "";
  378.     print $handle $i1, $mso, 'PgfCellAlignment ', $CellAlignment, $msc, "\n"
  379.     if $CellAlignment ne "";
  380.     print $handle $i1, $mso, 'PgfCellMargins ', $CellMargins, $msc, "\n"
  381.     if $CellMargins ne "";
  382.     print $handle $i1, $mso, 'PgfCellLMarginFixed ', $CellLMarginFixed,
  383.                $msc, "\n"
  384.     if $CellLMarginFixed ne "";
  385.     print $handle $i1, $mso, 'PgfCellTMarginFixed ', $CellTMarginFixed,
  386.                $msc, "\n"
  387.     if $CellTMarginFixed ne "";
  388.     print $handle $i1, $mso, 'PgfCellRMarginFixed ', $CellRMarginFixed,
  389.                $msc, "\n"
  390.     if $CellRMarginFixed ne "";
  391.     print $handle $i1, $mso, 'PgfCellBMarginFixed ', $CellBMarginFixed,
  392.                $msc, "\n"
  393.     if $CellBMarginFixed ne "";
  394.     print $handle $i0, $msc, " $como end of Pgf\n";
  395. }
  396. ##---------------------------------------------------------------------------##
  397. ##    MIFget_last_pgf_data() is a convienence routine that returns the
  398. ##    data associated with the last Pgf statement.  This routine
  399. ##    is mainly used by other mif_* libraries that need to process
  400. ##    Pgf statements (eg. mif_pgfc).
  401. ##
  402. ##    Usage:
  403. ##        @array = &'MIFget_last_pgf_data();
  404. ##
  405. sub main'MIFget_last_pgf_data {
  406.     ($pgf_Tag,
  407.      $pgf_UseNextTag,
  408.      $pgf_NextTag,
  409.      $pgf_FIndent,
  410.      $pgf_LIndent,
  411.      $pgf_RIndent,
  412.      $pgf_Alignment,
  413.      $pgf_SpBefore,
  414.      $pgf_SpAfter,
  415.      $pgf_LineSpacing,
  416.      $pgf_Leading,
  417.      $pgf_NumTabs,
  418.      $pgf_TabStops,
  419.      $pgf_Placement,
  420.      $pgf_PlacementStyle,
  421.      $pgf_RunInDefaultPunct,
  422.      $pgf_WithPrev,
  423.      $pgf_WithNext,
  424.      $pgf_BlockSize,
  425.      $pgf_AutoNum,
  426.      $pgf_NumFormat,
  427.      $pgf_NumberFont,
  428.      $pgf_NumAtEnd,
  429.      $pgf_Hyphenate,
  430.      $pgf_HyphenMaxLines,
  431.      $pgf_HyphenMinPrefix,
  432.      $pgf_HyphenMinSuffix,
  433.      $pgf_HyphenMinWord,
  434.      $pgf_LetterSpace,
  435.      $pgf_MinWordSpace,
  436.      $pgf_OptWordSpace,
  437.      $pgf_MaxWordSpace,
  438.      $pgf_Language,
  439.      $pgf_TopSeparator,
  440.      $pgf_BotSeparator,
  441.      $pgf_CellAlignment,
  442.      $pgf_CellMargins,
  443.      $pgf_CellLMarginFixed,
  444.      $pgf_CellTMarginFixed,
  445.      $pgf_CellRMarginFixed,
  446.      $pgf_CellBMarginFixed,
  447.      $fnt_Tag,
  448.      $fnt_Family,
  449.      $fnt_Angle,
  450.      $fnt_Weight,
  451.      $fnt_Var,
  452.      $fnt_PostScriptName,
  453.      $fnt_PlatformName,
  454.      $fnt_Size,
  455.      $fnt_Color,
  456.      $fnt_Underline,
  457.      $fnt_DoubleUnderline,
  458.      $fnt_NumericUnderline,
  459.      $fnt_Underlining,
  460.      $fnt_Overline,
  461.      $fnt_Strike,
  462.      $fnt_SupScript,
  463.      $fnt_SubScript,
  464.      $fnt_ChangeBar,
  465.      $fnt_Position,
  466.      $fnt_Outline,
  467.      $fnt_Shadow,
  468.      $fnt_PairKern,
  469.      $fnt_Case,
  470.      $fnt_DX,
  471.      $fnt_DY,
  472.      $fnt_DW,
  473.      $fnt_Plain,
  474.      $fnt_Bold,
  475.      $fnt_Italic,
  476.      $fnt_Separation);
  477. }
  478. ##---------------------------------------------------------------------------##
  479.                 ##--------------##
  480.                 ## Mif Routines ##
  481.                 ##--------------##
  482. ##---------------------------------------------------------------------------##
  483. ##    The routines definded below are all registered in the %MIFToken         ##
  484. ##    array for use in the MIFread_mif() routine.  There purpose is to     ##
  485. ##    store the information contained in Pgf statement.             ##
  486. ##---------------------------------------------------------------------------##
  487.  
  488. ##---------------------------------------------------------------------------
  489. sub Pgf {
  490.     local($token, $mode, *data) = @_;
  491.  
  492.     if ($mode == $MOpen) {
  493.     $_font_orgfunc = &'MIFget_font_func();
  494.     &'MIFset_font_func("mif_pgf'font_close");
  495.     $_tab_orgfunc = &'MIFget_tab_func();
  496.     &'MIFset_tab_func("mif_pgf'tab_close");
  497.  
  498.     $pgf_Tag        = "";
  499.     $pgf_UseNextTag        = "";
  500.     $pgf_NextTag        = "";
  501.     $pgf_FIndent        = "";
  502.     $pgf_LIndent        = "";
  503.     $pgf_RIndent        = "";
  504.     $pgf_Alignment        = "";
  505.     $pgf_SpBefore        = "";
  506.     $pgf_SpAfter        = "";
  507.     $pgf_LineSpacing    = "";
  508.     $pgf_Leading        = "";
  509.     $pgf_NumTabs        = "";
  510.     $pgf_TabStops        = "";
  511.     $pgf_Placement        = "";
  512.     $pgf_PlacementStyle    = "";
  513.     $pgf_RunInDefaultPunct    = "";
  514.     $pgf_WithPrev        = "";
  515.     $pgf_WithNext        = "";
  516.     $pgf_BlockSize        = "";
  517.     $pgf_AutoNum        = "";
  518.     $pgf_NumFormat        = "";
  519.     $pgf_NumberFont        = "";
  520.     $pgf_NumAtEnd        = "";
  521.     $pgf_Hyphenate        = "";
  522.     $pgf_HyphenMaxLines    = "";
  523.     $pgf_HyphenMinPrefix    = "";
  524.     $pgf_HyphenMinSuffix    = "";
  525.     $pgf_HyphenMinWord    = "";
  526.     $pgf_LetterSpace    = "";
  527.     $pgf_MinWordSpace    = "";
  528.     $pgf_OptWordSpace    = "";
  529.     $pgf_MaxWordSpace    = "";
  530.     $pgf_Language        = "";
  531.     $pgf_TopSeparator    = "";
  532.     $pgf_BotSeparator    = "";
  533.     $pgf_CellAlignment    = "";
  534.     $pgf_CellMargins    = "";
  535.     $pgf_CellLMarginFixed    = "";
  536.     $pgf_CellTMarginFixed    = "";
  537.     $pgf_CellRMarginFixed    = "";
  538.     $pgf_CellBMarginFixed    = "";
  539.  
  540.     $fnt_Tag        = "";
  541.     $fnt_Family        = "";
  542.     $fnt_Angle        = "";
  543.     $fnt_Weight        = "";
  544.     $fnt_Var        = "";
  545.     $fnt_PostScriptName    = "";
  546.     $fnt_PlatformName    = "";
  547.     $fnt_Size        = "";
  548.     $fnt_Color        = "";
  549.     $fnt_Underline        = "";
  550.     $fnt_DoubleUnderline    = "";
  551.     $fnt_NumericUnderline    = "";
  552.     $fnt_Underlining    = "";
  553.     $fnt_Overline        = "";
  554.     $fnt_Strike        = "";
  555.     $fnt_SupScript        = "";
  556.     $fnt_SubScript        = "";
  557.     $fnt_ChangeBar        = "";
  558.     $fnt_Position        = "";
  559.     $fnt_Outline        = "";
  560.     $fnt_Shadow        = "";
  561.     $fnt_PairKern        = "";
  562.     $fnt_Case        = "";
  563.     $fnt_DX            = "";
  564.     $fnt_DY            = "";
  565.     $fnt_DW            = "";
  566.     $fnt_Plain        = "";
  567.     $fnt_Bold        = "";
  568.     $fnt_Italic        = "";
  569.     $fnt_Separation        = "";
  570.     } elsif ($mode == $MClose) {
  571.     &$pgf_close_func() if $pgf_close_func;
  572.     &'MIFset_font_func($_font_orgfunc);
  573.     &'MIFset_tab_func($_tab_orgfunc);
  574.     } else {
  575.     warn "Unexpected mode, $mode, passed to Pgf routine\n";
  576.     }
  577. }
  578. ##---------------------------------------------------------------------------
  579. sub PgfTag {
  580.     local($token, $mode, *data) = @_;
  581.     ($pgf_Tag) = $data =~ /^\s*$stb([^$ste]*)$ste.*$/o;
  582. }
  583. ##---------------------------------------------------------------------------
  584. sub PgfUseNextTag {
  585.     local($token, $mode, *data) = @_;
  586.     ($pgf_UseNextTag) = $data =~ /^\s*(.*)$/o;
  587. }
  588. ##---------------------------------------------------------------------------
  589. sub PgfNextTag {
  590.     local($token, $mode, *data) = @_;
  591.     ($pgf_NextTag) = $data =~ /^\s*$stb([^$ste]*)$ste.*$/o;
  592. }
  593. ##---------------------------------------------------------------------------
  594. sub PgfFIndent {
  595.     local($token, $mode, *data) = @_;
  596.     ($pgf_FIndent) = $data =~ /^\s*(.*)$/o;
  597. }
  598. ##---------------------------------------------------------------------------
  599. sub PgfLIndent {
  600.     local($token, $mode, *data) = @_;
  601.     ($pgf_LIndent) = $data =~ /^\s*(.*)$/o;
  602. }
  603. ##---------------------------------------------------------------------------
  604. sub PgfRIndent {
  605.     local($token, $mode, *data) = @_;
  606.     ($pgf_RIndent) = $data =~ /^\s*(.*)$/o;
  607. }
  608. ##---------------------------------------------------------------------------
  609. sub PgfAlignment {
  610.     local($token, $mode, *data) = @_;
  611.     ($pgf_Alignment) = $data =~ /^\s*(.*)$/o;
  612. }
  613. ##---------------------------------------------------------------------------
  614. sub PgfSpBefore {
  615.     local($token, $mode, *data) = @_;
  616.     ($pgf_SpBefore) = $data =~ /^\s*(.*)$/o;
  617. }
  618. ##---------------------------------------------------------------------------
  619. sub PgfSpAfter {
  620.     local($token, $mode, *data) = @_;
  621.     ($pgf_SpAfter) = $data =~ /^\s*(.*)$/o;
  622. }
  623. ##---------------------------------------------------------------------------
  624. sub PgfLineSpacing {
  625.     local($token, $mode, *data) = @_;
  626.     ($pgf_LineSpacing) = $data =~ /^\s*(.*)$/o;
  627. }
  628. ##---------------------------------------------------------------------------
  629. sub PgfLeading {
  630.     local($token, $mode, *data) = @_;
  631.     ($pgf_Leading) = $data =~ /^\s*(.*)$/o;
  632. }
  633. ##---------------------------------------------------------------------------
  634. sub PgfNumTabs {
  635.     local($token, $mode, *data) = @_;
  636.     ($pgf_NumTabs) = $data =~ /^\s*(.*)$/o;
  637. }
  638. ##---------------------------------------------------------------------------
  639. sub PgfPlacement {
  640.     local($token, $mode, *data) = @_;
  641.     ($pgf_Placement) = $data =~ /^\s*(.*)$/o;
  642. }
  643. ##---------------------------------------------------------------------------
  644. sub PgfPlacementStyle {
  645.     local($token, $mode, *data) = @_;
  646.     ($pgf_PlacementStyle) = $data =~ /^\s*(.*)$/o;
  647. }
  648. ##---------------------------------------------------------------------------
  649. sub PgfRunInDefaultPunct {
  650.     local($token, $mode, *data) = @_;
  651.     ($pgf_RunInDefaultPunct) = $data =~ /^\s*$stb([^$ste]*)$ste.*$/o;
  652. }
  653. ##---------------------------------------------------------------------------
  654. sub PgfWithPrev {
  655.     local($token, $mode, *data) = @_;
  656.     ($pgf_WithPrev) = $data =~ /^\s*(.*)$/o;
  657. }
  658. ##---------------------------------------------------------------------------
  659. sub PgfWithNext {
  660.     local($token, $mode, *data) = @_;
  661.     ($pgf_WithNext) = $data =~ /^\s*(.*)$/o;
  662. }
  663. ##---------------------------------------------------------------------------
  664. sub PgfBlockSize {
  665.     local($token, $mode, *data) = @_;
  666.     ($pgf_BlockSize) = $data =~ /^\s*(.*)$/o;
  667. }
  668. ##---------------------------------------------------------------------------
  669. sub PgfAutoNum {
  670.     local($token, $mode, *data) = @_;
  671.     ($pgf_AutoNum) = $data =~ /^\s*(.*)$/o;
  672. }
  673. ##---------------------------------------------------------------------------
  674. sub PgfNumFormat {
  675.     local($token, $mode, *data) = @_;
  676.     ($pgf_NumFormat) = $data =~ /^\s*$stb([^$ste]*)$ste.*$/o;
  677. }
  678. ##---------------------------------------------------------------------------
  679. sub PgfNumberFont {
  680.     local($token, $mode, *data) = @_;
  681.     ($pgf_NumberFont) = $data =~ /^\s*$stb([^$ste]*)$ste.*$/o;
  682. }
  683. ##---------------------------------------------------------------------------
  684. sub PgfNumAtEnd {
  685.     local($token, $mode, *data) = @_;
  686.     ($pgf_NumAtEnd) = $data =~ /^\s*(.*)$/o;
  687. }
  688. ##---------------------------------------------------------------------------
  689. sub PgfHyphenate {
  690.     local($token, $mode, *data) = @_;
  691.     ($pgf_Hyphenate) = $data =~ /^\s*(.*)$/o;
  692. }
  693. ##---------------------------------------------------------------------------
  694. sub HyphenMaxLines {
  695.     local($token, $mode, *data) = @_;
  696.     ($pgf_HyphenMaxLines) = $data =~ /^\s*(.*)$/o;
  697. }
  698. ##---------------------------------------------------------------------------
  699. sub HyphenMinPrefix {
  700.     local($token, $mode, *data) = @_;
  701.     ($pgf_HyphenMinPrefix) = $data =~ /^\s*(.*)$/o;
  702. }
  703. ##---------------------------------------------------------------------------
  704. sub HyphenMinSuffix {
  705.     local($token, $mode, *data) = @_;
  706.     ($pgf_HyphenMinSuffix) = $data =~ /^\s*(.*)$/o;
  707. }
  708. ##---------------------------------------------------------------------------
  709. sub HyphenMinWord {
  710.     local($token, $mode, *data) = @_;
  711.     ($pgf_HyphenMinWord) = $data =~ /^\s*(.*)$/o;
  712. }
  713. ##---------------------------------------------------------------------------
  714. sub PgfLetterSpace {
  715.     local($token, $mode, *data) = @_;
  716.     ($pgf_LetterSpace) = $data =~ /^\s*(.*)$/o;
  717. }
  718. ##---------------------------------------------------------------------------
  719. sub PgfMinWordSpace {
  720.     local($token, $mode, *data) = @_;
  721.     ($pgf_MinWordSpace) = $data =~ /^\s*(.*)$/o;
  722. }
  723. ##---------------------------------------------------------------------------
  724. sub PgfOptWordSpace {
  725.     local($token, $mode, *data) = @_;
  726.     ($pgf_OptWordSpace) = $data =~ /^\s*(.*)$/o;
  727. }
  728. ##---------------------------------------------------------------------------
  729. sub PgfMaxWordSpace {
  730.     local($token, $mode, *data) = @_;
  731.     ($pgf_MaxWordSpace) = $data =~ /^\s*(.*)$/o;
  732. }
  733. ##---------------------------------------------------------------------------
  734. sub PgfLanguage {
  735.     local($token, $mode, *data) = @_;
  736.     ($pgf_Language) = $data =~ /^\s*(.*)$/o;
  737. }
  738. ##---------------------------------------------------------------------------
  739. sub PgfTopSeparator {
  740.     local($token, $mode, *data) = @_;
  741.     ($pgf_TopSeparator) = $data =~ /^\s*$stb([^$ste]*)$ste.*$/o;
  742. }
  743. ##---------------------------------------------------------------------------
  744. sub PgfBotSeparator {
  745.     local($token, $mode, *data) = @_;
  746.     ($pgf_BotSeparator) = $data =~ /^\s*$stb([^$ste]*)$ste.*$/o;
  747. }
  748. ##---------------------------------------------------------------------------
  749. sub PgfCellAlignment {
  750.     local($token, $mode, *data) = @_;
  751.     ($pgf_CellAlignment) = $data =~ /^\s*(.*)$/o;
  752. }
  753. ##---------------------------------------------------------------------------
  754. sub PgfCellMargins {
  755.     local($token, $mode, *data) = @_;
  756.     ($pgf_CellMargins) = $data =~ /^\s*(.*)$/o;
  757. }
  758. ##---------------------------------------------------------------------------
  759. sub PgfCellLMarginFixed {
  760.     local($token, $mode, *data) = @_;
  761.     ($pgf_CellLMarginFixed) = $data =~ /^\s*(.*)$/o;
  762. }
  763. ##---------------------------------------------------------------------------
  764. sub PgfCellTMarginFixed {
  765.     local($token, $mode, *data) = @_;
  766.     ($pgf_CellTMarginFixed) = $data =~ /^\s*(.*)$/o;
  767. }
  768. ##---------------------------------------------------------------------------
  769. sub PgfCellRMarginFixed {
  770.     local($token, $mode, *data) = @_;
  771.     ($pgf_CellRMarginFixed) = $data =~ /^\s*(.*)$/o;
  772. }
  773. ##---------------------------------------------------------------------------
  774. sub PgfCellBMarginFixed {
  775.     local($token, $mode, *data) = @_;
  776.     ($pgf_CellBMarginFixed) = $data =~ /^\s*(.*)$/o;
  777. }
  778. ##---------------------------------------------------------------------------
  779. sub tab_close {
  780.     $pgf_TabStops .= $ts if $pgf_TabStops;
  781.     $pgf_TabStops .= join($tf, &'MIFget_last_tab_data());
  782. }
  783. ##---------------------------------------------------------------------------
  784. sub font_close {
  785.     local($token);
  786.     ($token,
  787.      $fnt_Tag,
  788.      $fnt_Family,
  789.      $fnt_Angle,
  790.      $fnt_Weight,
  791.      $fnt_Var,
  792.      $fnt_PostScriptName,
  793.      $fnt_PlatformName,
  794.      $fnt_Size,
  795.      $fnt_Color,
  796.      $fnt_Underline,
  797.      $fnt_DoubleUnderline,
  798.      $fnt_NumericUnderline,
  799.      $fnt_Underlining,
  800.      $fnt_Overline,
  801.      $fnt_Strike,
  802.      $fnt_SupScript,
  803.      $fnt_SubScript,
  804.      $fnt_ChangeBar,
  805.      $fnt_Position,
  806.      $fnt_Outline,
  807.      $fnt_Shadow,
  808.      $fnt_PairKern,
  809.      $fnt_Case,
  810.      $fnt_DX,
  811.      $fnt_DY,
  812.      $fnt_DW,
  813.      $fnt_Plain,
  814.      $fnt_Bold,
  815.      $fnt_Italic,
  816.      $fnt_Separation) = &'MIFget_last_font_data();
  817. }
  818. ##---------------------------------------------------------------------------
  819. 1;
  820.